package com.shp.dao;

import com.shp.pojo.Good;
import com.shp.pojo.Orders;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 订单操作
 * @author ZWL
 * @Version: 1.0
 * @create: 2020/2/26 13:57
 */
public interface OrdersDao {

    /**
     * 保存订单
     * @param orders Orders
     * @return 影响行数
     */
    public int insert(@Param("orders") Orders orders);

    /**
     * 保存批量订单
     * @param ordersList Orders
     * @return 影响行数
     */
    public int insertBatch(@Param("list") List<Orders> ordersList);

    /**
     * 根据商品id，生成订单
     * @param goodsList List<Good>
     * @return List<Orders>
     */
    public List<Orders> getOrdersByGoodsId(@Param("list") List<Good> goodsList);

    /**
     * 根据用户id，查询我买的订单
     * @param userId 用户id
     * @return  List<Orders>
     */
    public List<Orders> getOrdersByUserId(@Param("id")Integer userId);

    /**
     * 根据用户id，查询我卖的订单
     * @param userId 用户id
     * @return List<Orders>
     */
    public List<Orders> getUserOrdersByUserId(@Param("id")Integer userId);

    /**
     *删除订单
     * @param userId 用户id
     * @param ordersId 订单编号
     * @return true代表删除成功，false删除失败
     */
    public int deleteByUserAndId(@Param("userId") Integer userId, @Param("ordersId") Integer ordersId);

    /**
     * 修改订单状态
     *
     * @param orders 订单
     * @return true代表成功，false失败
     */
    public int update(@Param("orders") Orders orders);

    /**
     * 查询所有订单，便于分页查询
     *
     * @return List<Orders>
     */
    public List<Orders> getAll();

    /**
     * 根据订单id，查询指定的订单
     *
     * @param id 订单id
     * @return 订单信息
     */
    public Orders getOrdersById(@Param("id") Integer id);

    /**
     * 查询所有符合条件的订单
     * @param orders 条件
     * @return List<Orders>
     */
    public List<Orders> getOrdersBySelected(@Param("orders") Orders orders);

    /**
     * 批量删除订单
     *
     * @param ids 订单编号
     * @return 删除成功返回true；否则返回false
     */
    public int deleteBatch(@Param("ids") Integer[] ids);
}
